/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
 * Description: Hmfs-tools compare
 */

#ifndef HMFS_WHOLE_COMPARE_H
#define HMFS_WHOLE_COMPARE_H

#include <memory>
#include <string>
#include <sys/types.h>

#include "compare_data.h"
#include "hmfs_fs.h"

namespace OHOS {
namespace Hmfs {
int32_t FsBinaryCompare(const std::string &src, const std::string &dst, bool isResizeFinished = true);
int32_t GetSuperBlockInfo(FsData &fsInfo);
void AddSuperBlockSkipPara(FsData &srcInfo);
#ifdef HMFS_UNIT_TEST_RESIZE
void AddCheckPointSkipParaForResize(FsData &srcInfo, bool isResizeFinished);
#else
void AddCheckPointSkipParaForMkfs(FsData &srcInfo);
#endif
void AddMainAreaSkipPara(FsData &srcInfo);
void AddSkipPara(uint64_t blockId, uint32_t offset, uint32_t len);
int32_t BinaryCompareFs(FsData &srcInfo, FsData &dstInfo);
int32_t BinaryCompareOneBlock(char *srcBuf, char *dstBuf, uint64_t blockId);
} // namespace Hmfs
} // namespace OHOS
#endif
